package com.zs.controller;

import com.zs.pojo.User1;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/validated")
public class ValidatedController {
    /*
    * 1. 导入依赖（jsr303|hibernate）
    * 2. 实体类属性添加注解 @NotNull @ NotBlanlk @NotEmpty @Length @Min @Max @Past @Future
    * 3. controller / handler (@Validated | @Valid  @RequestBody 实体类 对象， BindingResult result)
    * */

   /*
   * @Validated 开启校验功能 【推荐 mvc原件】
   * @Valid  开启校验功能  作用 一模一样
   *
   *
   * 校验失败：
   * 默认： 向前端抛出异常400 MethodArgumentNotValidException
   * 自行： 捕捉绑定异常信息  bindingResult
   * */


    @PostMapping("saveUser")
    public Object saveUser1(@Validated @RequestBody User1 user1, BindingResult bindingResult){

        System.out.println("*****in saveUser1******");
        if(bindingResult.hasErrors()){
            System.out.println("*****has errors******");
            List<ObjectError> allErrors = bindingResult.getAllErrors();
            for (ObjectError allError : allErrors) {
                System.out.println(allError.getDefaultMessage());
            }
            return allErrors;
        }
        System.out.println("*****no errors******");
        return user1;
    }
}
